import time
from selenium.webdriver import Chrome  # 导入浏览器的包
from selenium import webdriver  # 用于操作浏览器
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.chrome.options import Options  # 用于设置浏览器
from selenium.webdriver.chrome.service import Service  # 用于管理驱动
from selenium.webdriver.common.keys import Keys  # 回车
from selenium.webdriver.common.by import By  # 元素定位导包

# 创建设置浏览器对象
options = Options()
# 禁用沙盒模式(闪退 增加兼容性)
options.add_argument('--no-sandbox')
# 保持浏览器打开状态（代码执行完浏览器默认关闭）
options.add_experimental_option('detach', True)
options.add_argument("--incognito")  # 启用无痕模式



# ChromeDriver的绝对路径
chromedriver_path = r'D:\LJY\pycharm\pycharmprojects\FirstProject\chromedriver.exe'

# 创建并启动浏览器
web = webdriver.Chrome(service=Service(chromedriver_path), options=options)

# 打开浏览器，请求到拉钩
web.get("https://www.zhipin.com/?city=100010000&ka=city-sites-100010000")

# 搜索框搜索 python 回车
web.find_element(By.XPATH,'//*[@id="wrap"]/div[3]/div/div[1]/div[1]/form/div[2]/p/input').send_keys('python',Keys.ENTER)
n = 1
# 获取所有职位元素
time.sleep(15)
job_list=web.find_elements(By.CSS_SELECTOR, '.job-card-wrapper .job-card-left ')
for a in job_list:
    try:
        # 等待职位标题元素加载完成
        job_title = WebDriverWait(a, 10).until(
            EC.presence_of_element_located((By.CSS_SELECTOR, '.job-card-wrapper .job-card-left .job-title '))
        )
        job_title.click()

        # 窗口转换
        web.switch_to.window(web.window_handles[-1])  # 跳到倒数第一个窗口

        # 等待信息元素加载完成
        info_element = WebDriverWait(web, 20).until(
            EC.presence_of_element_located((By.XPATH, '//*[@id="main"]/div[3]/div/div[2]/div[1]'))
        )
        text = info_element.text  # 拿文本

        # 把信息保存到文件
        f = open(f"1/需求_{n}.txt", mode='w', encoding='utf-8')
        f.write(text)
        # 关闭文件
        f.close()

    except Exception as e:
        print(f"出错: {e}")

    finally:
        # 关闭窗口
        web.close()

        # 调整窗口到最开始的界面
        web.switch_to.window(web.window_handles[0])
        time.sleep(10)

        n += 1